/*
*@file:main.c 
*@desc：客户端程序，主要完成以下任务：
*0. 对资源进行缓存，以准备后续的
*1. 建立socket套接字，连接服务器。
*2-1. 当按下按键之后，给服务器发送数据。
*2-2. 接收到显示数据，进行解析并显示在屏幕上。

编译命令:gcc main.c rcv_from_server.c send_to_server.c ./APP/debugLog.c map_parse.c -o clienttest -lpthread
*/

#include <stdio.h>
#include <sys/types.h>          
#include <sys/socket.h>
#include <netinet/in.h>//struct sockaddr_in
#include <arpa/inet.h>//htons(PORT)
#include <pthread.h>
#include <unistd.h>

int skt_fd;


#define SERVER_IP     "127.0.0.1"
#define SERVER_PORT     8888


#include "APP/debugLog.h"
#include "map_parse.h"
#include "rcv_from_server.h"
#include "send_to_server.h"

static void client_socket_init();


extern FILE *log_fp;//用于调试


void debug_test(void)
{
    //DEBUG_PRINTF("Today is %d", 2024);
    //debug_timestamp();
    //FILE_DEBUG_PRINTF("Today is %d", 2024);

    DEBUG_PRINTF("Today is %d", 2024);
}

int main()
{
    debug_file_init();
    client_socket_init();//与服务器端进行连接  

    //创建两个线程：一个用来接收数据，一个用来发送数据
    pthread_t rcv_data_tid = 0;
    pthread_t send_data_tid = 0;

    pthread_create(&rcv_data_tid, NULL, rcv_data, NULL);
    pthread_create(&send_data_tid, NULL, send_data, NULL);
    
    pthread_join(rcv_data_tid, NULL);
    pthread_join(send_data_tid, NULL);   
    return 0;
}



static void client_socket_init()
{
    int ret;
    
    skt_fd = socket(AF_INET,SOCK_STREAM,0);
    if(skt_fd < 0)
    {
            perror("Socket create failed!");
            exit(-1);
    }

    struct sockaddr_in server_addr;
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(SERVER_PORT);
    //server_addr.sin_addr.s_addr = inet_addr(SERVER_ADDR);
    inet_pton(AF_INET, SERVER_IP, &(server_addr.sin_addr));


    ret = connect(skt_fd,(struct sockaddr*)&server_addr,sizeof(struct sockaddr_in));
    if(ret == -1){
        perror("connect error");
        close(skt_fd);
        exit(-1);
    }

}


